package com.twotwoshop.service.goods.service;


import com.baomidou.mybatisplus.extension.service.IService;
import com.twotwoshop.domin.common.dtos.ResponseResult;
import com.twotwoshop.domin.goods.dtos.GoodsSearchDto;
import com.twotwoshop.domin.goods.dtos.ProductDto;
import com.twotwoshop.domin.goods.pojo.Product;

public interface ProductService extends IService<Product> {

    /**
     * 发布商品
     * @param productDto
     * @return
     */
    ResponseResult publishProduct(ProductDto productDto);

    /**
     * 查看我的发布
     * @param goodsSearchDto
     * @return
     */
    ResponseResult listProducts(GoodsSearchDto goodsSearchDto);

    /**
     * 获取全部商品
     * @param goodsSearchDto
     * @return
     */
    ResponseResult listProductsAll(GoodsSearchDto goodsSearchDto);


    /**
     * 获取商品详情信息
     * @param id
     * @return
     */
    ResponseResult productDetail(Long id);

    /**
     * 上下架商品
     * @param productDto
     * @return
     */
    ResponseResult updateStatus(ProductDto productDto);


    /**
     * 修改商品信息
     * @param productDto
     * @return
     */
    ResponseResult updateProduct(ProductDto productDto);

    /**
     * 删除商品信息
     * @param id
     * @return
     */
    ResponseResult deleteProduct(Long id);


    /**
     * 异步更新商品的浏览量
     * @param id
     * @return
     */
    void upViews(Long id);


    /**
     * 根据用户id获取发布商品
     * @param userId
     * @return
     */
    ResponseResult listProductsByUserId(Long userId);
}